Virtual resource templates

ABSTRACT

A computer implemented method, data processing system, and computer usable program code are provided for creating a set of virtual machine image for software. A virtual software resource template is retrieved. Metadata associated with the virtual software resource template is copied and the copy of the metadata is modified to generate personalized metadata for each virtual machine image in the set of virtual machine images. Then, the set of virtual machine images is deployed using the personalized metadata.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to data processing systems. Morespecifically, the present invention relates to a computer implementedmethod, data processing system, and computer usable program code forcreating virtual machine images for software.

2. Description of the Related Art

In modern computing environments, it is becoming increasingly popular todistribute software solutions as a set of virtual machine (VM) images asopposed to the various single software components that make up thesolutions. A virtual machine image is file representation of a virtualmachine, the virtual machine devices, and all the installed softwarecomponents. Virtualizers, like VMware® Server, instantiate and runvirtual machines starting from their file-based representation or image.Distributing software solutions as virtual machine images is veryappealing for both software vendors and customers because of thesimplified, less error prone, deployment, and maintenance process.

For example, consider software solutions like the IT Service Management(ITSM) that comprises the components and supported topologies as shownin FIGS. 3A and 3B. Topologies represent a particular mapping betweenone or more software components of a solution and one or more machinesor topology nodes where these components are installed. Usually, asolution may be deployed in one or more topologies.

Instead of distributing the sixteen different major components andrequired middleware components shown in table 302 in FIG. 3A, sevenpre-configured virtual machine images containing the entire softwarestack in each of the different topology nodes may be distributed, asshown in table 304 in FIG. 3B. A software stack is a set of softwarecomponents, such as an operating system, middleware, or applicationcomponents, needed to deliver a fully functional subsystem. In the caseof deploying the separate software components, the deployment processconsists of installing and configuring all the components of thedifferent software stack and then configuring their inter-connections.In the case of deploying virtual machines (VMs), the deployment processconsists of deploying the virtual machines associated with a certaintopology and configuring the external connections in each virtualmachine so that each virtual machine communicates correctly with theother virtual machines in the topology. Also, the virtual machines areconfigured to communicate with any necessary services in the existingcomputing infrastructure into which the virtual machines are beingconfigured.

However, current virtual machine technology is aimed at the process ofcreating, duplicating, and deploying virtual machines themselves withoutreference to the application(s) installed in the virtual machine imagesor to the dependencies among multiple virtual machines that fulfillvarious parts of a distributed application. Thus, it would beadvantageous to have an improved method for managing software withminimal user intervention.

SUMMARY OF THE INVENTION

The different illustrative embodiments provide a computer implementedmethod, data processing system, and computer usable program code tocreate a set of virtual machine images for software. The illustrativeembodiments retrieve a virtual software resource template. Theillustrative embodiments copy metadata associated with the virtualsoftware resource template. The illustrative embodiments modify the copyof the metadata to generate personalized metadata for each virtualmachine image in the set of virtual machine images. The illustrativeembodiments deploy the set of virtual machine images using thepersonalized metadata.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features believed characteristic of the invention are setforth in the appended claims. The invention itself, however, as well asa preferred mode of use, further objectives and advantages thereof, willbest be understood by reference to the following detailed description ofan illustrative embodiment when read in conjunction with theaccompanying drawings, wherein:

FIG. 1 is a pictorial representation of a network of data processingsystems in which the exemplary embodiments may be implemented;

FIG. 2 is a block diagram of a data processing system in which theexemplary embodiments may be implemented;

FIGS. 3A and 3B are a set of tables illustrating a software solution tobe distributed that comprises components and supported topologies inaccordance with an exemplary embodiment;

FIG. 4 is a block diagram illustrating deployed virtual machine imagesin accordance with an exemplary embodiment;

FIG. 5 is a block diagram of components that create and consume virtualsoftware resource templates in accordance with an exemplary embodiment;

FIG. 6 is a flowchart illustrating the operation of creating a virtualsoftware resource template in accordance with an exemplary embodiment;and

FIG. 7 is a flowchart illustrating the operation of managing software inaccordance with an exemplary embodiment.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

FIGS. 1-2 are provided as exemplary diagrams of data processingenvironments in which embodiments may be implemented. It should beappreciated that FIGS. 1-2 are only exemplary and are not intended toassert or imply any limitation with regard to the environments in whichaspects or embodiments may be implemented. Many modifications to thedepicted environments may be made without departing from the spirit andscope.

With reference now to the figures, FIG. 1 depicts a pictorialrepresentation of a network of data processing systems in which theexemplary embodiments may be implemented. Network data processing system100 is a network of computers in which embodiments may be implemented.Network data processing system 100 contains network 102, which is themedium used to provide communications links between various devices andcomputers connected together within network data processing system 100.Network 102 may include connections, such as wire, wirelesscommunication links, or fiber optic cables.

In the depicted example, server 104 and server 106 connect to network102 along with storage unit 108. In addition, clients 110, 112, and 114connect to network 102. These clients 110, 112, and 114 may be, forexample, personal computers or network computers. In the depictedexample, server 104 provides data, such as boot files, operating systemimages, and applications to clients 110, 112, and 114. Clients 110, 112,and 114 are clients to server 104 in this example. Network dataprocessing system 100 may include additional servers, clients, and otherdevices not shown.

In the depicted example, network data processing system 100 is theInternet with network 102 representing a worldwide collection ofnetworks and gateways that use the Transmission ControlProtocol/Internet Protocol (TCP/IP) suite of protocols to communicatewith one another. At the heart of the Internet is a backbone ofhigh-speed data communication lines between major nodes or hostcomputers, consisting of thousands of commercial, government,educational and other computer systems that route data and messages. Ofcourse, network data processing system 100 also may be implemented as anumber of different types of networks, such as for example, an intranet,a local area network (LAN), or a wide area network (WAN). FIG. 1 isintended as an example, and not as an architectural limitation fordifferent embodiments.

With reference now to FIG. 2, a block diagram of a data processingsystem is shown in which the exemplary embodiments may be implemented.Data processing system 200 is an example of a computer, such as server104 or client 110 in FIG. 1, in which computer usable code orinstructions implementing the processes for embodiments may be located.

In the depicted example, data processing system 200 employs a hubarchitecture including north bridge and memory controller hub (NB/MCH)202 and south bridge and input/output (I/O) controller hub (ICH) 204.Processing unit 206, main memory 208, and graphics processor 210 areconnected to north bridge and memory controller hub 202. Graphicsprocessor 210 may be connected to north bridge and memory controller hub202 through an accelerated graphics port (AGP).

In the depicted example, local area network (LAN) adapter 212 connectsto south bridge and I/O controller hub 204. Audio adapter 216, keyboardand mouse adapter 220, modem 222, read only memory (ROM) 224, hard diskdrive (HDD) 226, CD-ROM drive 230, universal serial bus (USB) ports andother communications ports 232, and PCI/PCIe devices 234 connect tosouth bridge and I/O controller hub 204 through bus 238 and bus 240.PCI/PCIe devices may include, for example, Ethernet adapters, add-incards and PC cards for notebook computers. PCI uses a card buscontroller, while PCIe does not. ROM 224 may be, for example, a flashbinary input/output system (BIOS).

Hard disk drive 226 and CD-ROM drive 230 connect to south bridge and I/Ocontroller hub 204 through bus 240. Hard disk drive 226 and CD-ROM drive230 may use, for example, an integrated drive electronics (IDE) orserial advanced technology attachment (SATA) interface. Super I/O (SIO)device 236 may be connected to south bridge and I/O controller hub 204.

An operating system runs on processing unit 206 and coordinates andprovides control of various components within data processing system 200in FIG. 2. As a client, the operating system may be a commerciallyavailable operating system such as Microsoft® Windows® XP (Microsoft andWindows are trademarks of Microsoft Corporation in the United States,other countries, or both). An object-oriented programming system, suchas the Java™ programming system, may run in conjunction with theoperating system and provides calls to the operating system from Javaprograms or applications executing on data processing system 200 (Javais a trademark of Sun Microsystems, Inc. in the United States, othercountries, or both).

As a server, data processing system 200 may be, for example, an IBMeServer™ pSeries® computer system, running the Advanced InteractiveExecutive (AIX®) operating system or Linux® operating system (eServer,pseries and AIX are trademarks of International Business MachinesCorporation in the United States, other countries, or both while Linuxis a trademark of Linus Torvalds in the United States, other countries,or both). Data processing system 200 may be a symmetric multiprocessor(SMP) system including a plurality of processors in processing unit 206.Alternatively, a single processor system may be employed.

Instructions for the operating system, the object-oriented programmingsystem, and applications or programs are located on storage devices,such as hard disk drive 226, and may be loaded into main memory 208 forexecution by processing unit 206. The processes for embodiments areperformed by processing unit 206 using computer usable program code,which may be located in a memory such as, for example, main memory 208,read only memory 224, or in one or more peripheral devices 226 and 230.

Those of ordinary skill in the art will appreciate that the hardware inFIGS. 1-2 may vary depending on the implementation. Other internalhardware or peripheral devices, such as flash memory, equivalentnon-volatile memory, or optical disk drives and the like, may be used inaddition to or in place of the hardware depicted in FIGS. 1-2. Also, theprocesses may be applied to a multiprocessor data processing system.

In some illustrative examples, data processing system 200 may be apersonal digital assistant (PDA), which is configured with flash memoryto provide non-volatile memory for storing operating system files and/oruser-generated data.

A bus system may be comprised of one or more buses, such as bus 238 orbus 240 as shown in FIG. 2. Of course the bus system may be implementedusing any type of communications fabric or architecture that providesfor a transfer of data between different components or devices attachedto the fabric or architecture. A communications unit may include one ormore devices used to transmit and receive data, such as modem 222 ornetwork adapter 212 of FIG. 2. A memory may be, for example, main memory208, read only memory 224, or a cache such as found in north bridge andmemory controller hub 202 in FIG. 2. The depicted examples in FIGS. 1-2and above-described examples are not meant to imply architecturallimitations. For example, data processing system 200 also may be atablet computer, laptop computer, or telephone device in addition totaking the form of a PDA.

An exemplary embodiment provides for managing software by deploying,configuring, and instantiating a software solution distributed asvirtual machine images. A virtual machine image consists of an operatingsystem, middleware, and application components. Depending on thetopology, some of these components communicate with other components inthe same virtual machine image, while other components communicate withcomponents in other images.

Turning back to the figures, FIGS. 3A and 3B are a set of tablesillustrating a software solution to be distributed that comprisescomponents and supported topologies in accordance with an exemplaryembodiment. Table 302 shows the components of a software solution. Thefirst column contains entries for each of the major components. Thesecond column contains entries for the required middleware componentsfor the corresponding major component and regular component.

Table 304 shows the various topologies supported by the solution oftable 302. The first column contains entries for each of the supportedtopologies. The second column contains entries for the names of thetopology nodes or virtual machine images that comprise the supportedtopology entry in the first column. The third column contains entriesfor major components from table 302 that comprise the topology nodes inthe entry of the second column. Following the name of each majorcomponent in the entry of the third column is the name of the specifictopology node in the entry of the second column to which the majorcomponent belongs.

FIG. 4 is a block diagram illustrating deployed virtual machine imagesin accordance with an exemplary embodiment. The virtual machine imagesin FIG. 4 may be deployed by a data processing system, such as dataprocessing system 200 in FIG. 2. There are two virtual machine images,VM1 402 and VM2 404. Virtual machine VM1 402 comprises components A andB. Virtual machine VM2 404 comprises components C and D. The connectionsbetween components A-B and C-D, connections 406 and 410, respectively,remains inside the boundary of the respective virtual machines while theconnection between components B and D, connection 408, traverses theboundary of the virtual machines.

The connection between components A and B can be established andconfigured at the time of the creation of VM1 402 while the connectionbetween components B and D needs to be established and configured at thetime of deployment. FIG. 4 illustrates one of the reasons why deployingsoftware solutions as virtual machine images is so appealing. That is,the customers need to handle only a fraction of the total dependenciesbetween the solution components—the dependencies that cross theboundaries of the virtual machines.

In an exemplary embodiment, the virtual machine image is treated as asingle software component with well identified access points. From thisperspective, the specific components in a virtual machine, such as aLinux® operating system, a queue manager, and a database that is onlyused by the queue manager, is irrelevant. What is relevant is thedesigned role or capability of the virtual machine, such as a providerof a queue manager service and the access point(s) of the virtualmachine. Some examples of access points are protocol, address, port, andany other parameter needed to connect to the virtual machine.

An exemplary embodiment provides for using metadata that describeshardware and software requirements of each virtual machine image, theservices the virtual machine exposes with associated access points, theservices that the virtual machine requires from other components inorder to fulfill the role of the virtual machine in the overall system,and other related metadata. Since the metadata describes hardware andsoftware requirements of each virtual machine image, the metadata may beconsidered personalized metadata.

An exemplary embodiment provides for a virtual software resourcetemplate (VSRT). A virtual software resource template is a collection ofone or more freeze-dried software stack(s) with associated metadata. Afreeze-dried software stack is a software stack comprised ofpre-configured, pre-tuned, and hardened components, such as an operatingsystem, an application server, a database, and a set of applications. Apre-tuned or hardened component is a component whose configuration, allthe parameters that influence the behavior of the component at run time,has been already executed and the results stored in the virtual machineimage. Examples of metadata information include, but are not limited to,information such as location of freeze-dried software stack volumes,hardware requirements such as CPU, memory, disk, network, and so forth,for hosting the virtual software resource template, external andinternal virtual machine image dependencies, policies associated withcapacity, configuration parameters for the solution, and so forth.

Virtual software resource templates (VSRTs) may be either simple orcomposite. A simple virtual software resource template, also called abase virtual software resource template, comprises a single softwarestack. That is, a base virtual software resource template comprises avirtual machine image and metadata for a single virtual machine. Acomposite virtual software resource template comprises multiple, finergrained software stacks. That is, a composite virtual software resourcetemplate comprises multiple virtual machine images and metadata formultiple virtual machines. Composite virtual software resource templatescontain information about assembling a set of virtual software resourcetemplates into a single distributed application or “solution”. Virtualsoftware resource templates may be deployed on a set of physicalmachines either by running in a virtual container or directly onphysical machines like a blade. A virtual container is a program capableof instantiating and running virtual software resource templates, suchas VMware® Server. When virtual software resource templates areinstantiated on a set of physical machines, one or more virtual softwareresources (VSRs) are created. A virtual software resource is a resourcethat is deployed, configured, and running.

An exemplary embodiment provides for a base virtual software resourcetemplate comprised of the following metadata information: an identifier,a name, a description, disk image information, hardware profile,software profile, capabilities, configuration, scale-out/clustering,intra-virtual software resource template dependencies, and externaldependencies.

An identifier is a globally unique identifier that may act as a primarykey for machine identification of the software stack contained in thevirtual machine image. A name is a unique name for human identificationof the software stack. The description is a short description of thefunctionality provided by the software stack. Disk image informationincludes, for example, the location of the disk images. A hardwareprofile is the virtual machine image hardware requirements. Theseinclude, for example, CPU, memory, disk, network, and so forth. Thisinformation is used for resource matching during the deployment phaseand results in the virtual machine definition.

A software profile includes detailed information about the softwareinstalled on the disk images. A disk image is the file image of avirtual disk. A virtual machine can have different virtual disks muchlike a physical machine can have different hard disks, for example, theOS version and release information. This information is particularlyuseful when the virtual software resource template is being extendedvertically by the application or when the virtual software resourcetemplate is being upgraded, for example, by applying fix-packs to themiddleware and/or operating system. Fix-packs are fixes software vendorsrollout to the bugs found in their software that needs to be applied bycustomers on top of their existing software installation for thesoftware to work properly. Capabilities are metadata that express orexplain the capabilities provided by the software stack, for example, aJ2EE™ application server or a servlet container and so forth.Configuration information is metadata that defines data that is neededfor the solution to be customized and configured. The configuration datais provided during the deployment of the virtual software resourcetemplate.

Scale-out/clustering information is metadata that identifies thepolicies associated with scale-out of virtual software resourcetemplates. A computer “cluster” is a group of loosely coupled computersthat work together closely so that in many respects they can be viewedas though they are a single computer. Clusters are usually deployed toimprove speed and/or reliability over that provided by a singlecomputer, while typically being much more cost-effective than singlecomputers of comparable speed or reliability. This technique of groupingcomputers is called “clustering”. “Scale-out” in the exemplaryembodiments is used to define machines, physical or virtual, that areclustered together to increase throughput and improve speed. Thescale-out information is useful at runtime for optimal instantiation andplacement of virtual machines. The intra-virtual software resourcetemplate dependencies are the dependencies between the various softwarestacks included in the composite virtual software resource templatedefinition. For example, IT Service Management (ITSM) Command LineInterface (CLI) client software stack “uses” IT Service Management dataserver software stack. External dependencies are the dependenciesbetween a software stack and external components. For example, aWebSphere® application server software stack might use a LightweightDirectory Access Protocol (LDAP) server for authentication.

An exemplary embodiment provides for a composite virtual softwareresource template comprised of the following metadata information: anidentifier, a name, a version, a description, capabilities, capacity,cost of instantiation, and constituent virtual software resourcetemplates. An identifier is a globally unique identifier that could actas a primary key for machine identification of the virtual softwareresource template. A name is a unique name for the human identificationof a virtual software resource template. A version refers to the versionof the virtual software resource template. The description is a shortdescription of the functionality provided by the virtual softwareresource template. The description may function as a miniature READMEfile for the solution. Capabilities are metadata that express or explainthe capabilities provided by the virtual software resource template, forexample, a J2EE™ application server, a servlet container, and so forth.

The capacity identifies the capacity of the virtual software resourcetemplate, provided that the hardware and software requirements are met.An example of capacity is the number of clients that the virtualsoftware resource template is capable of serving. The cost ofinstantiation is metadata that identifies the cost associated with theinstantiation of the virtual software resource template into a virtualsoftware resource (VSR). Cost refers to the time taken to perform thefunction. The cost information can be used, for example, by a utilityfunction to decide whether creating a new instance of a virtual softwareresource template in response to an increased workload of short durationwould be worthwhile.

The constituent virtual software resource template's metadata comprisesinformation about the virtual software resource template that make upthe distributed application, such as, for example, IT Service Management(ITSM) data server, IT Service Management (ITSM) User Interface (UI)server, etc. The constituent virtual software resource template'smetadata takes the form of one or more entries. Each entry comprises anidentifier and a role. The identifier is the identifier of the basevirtual software resource template. The role describes the role thesoftware stack in the base virtual software resource template will playin the solution described by the composite virtual software resourcetemplate. For example, a WebSphere® application server software stackmay play a role of a deployment manager or an application server orboth. It should be noted that the constituent virtual software resourcetemplates referred to in a composite virtual software resource templatemay themselves be either base or composite virtual software resourcetemplates. Thus, composite virtual software resource templates may benested.

Turning back to the figures, FIG. 5 is a block diagram of componentsthat create and consume virtual software resource templates inaccordance with an exemplary embodiment. The components in FIG. 5 may beimplemented on one or more data processing systems, such as dataprocessing system 200 in FIG. 2. VSRT factory 504 is responsible for theproduction of virtual software resource templates, both base andcomposite virtual software resource templates, including the virtualmachine images and associated metadata. VSRT factory 504 receives input502 from which a virtual software resource template is built. VSRTfactory 504 stores the virtual software resource template in VSRTrepository 506.

Input 502 comprises various inputs including the logical applicationstructure from the application developer, a logical topology, forexample, a three (3) tier deployment of a typical web application versustwo (2) tier deployment from a user who could be a domain expert, DB2and other middleware base. VSRT factory 504 also receives base virtualsoftware resource templates that are used as building blocks for othercomposite virtual software resource templates. For example, WebSphere®Application Server, DB2, and other middleware from VSRT repository 506.The inputs to VSRT factory 504 contain enough information to produce thevirtual software resource template metadata required for a particularimplementation.

VSRT deployment manager 508 is the consumer of the virtual softwareresource template metadata and virtual machine images. Apart fromretrieving virtual software resource templates from VSRT repository 506,VSRT deployment manager 508 also receives input 510. Input 510 is userinput, including input about the physical topology, information aboutthe physical machines in the data center, and so forth. VSRT deploymentmanager 508 instantiates virtual software resources on the physicalsystems of data center 512. Virtual software resources are a set ofvirtual machines with configuration information associated with thesoftware stack.

FIG. 6 is a flowchart illustrating the operation of creating a virtualsoftware resource template in accordance with an exemplary embodiment.The operation of FIG. 6 may be implemented in a virtual softwareresource template factory, such as VSRT factory 504 in FIG. 5. Theoperation begins when input regarding a virtual machine image isreceived (step 602). The received input comprises various inputsincluding the logical application structure from the applicationdeveloper, a logical topology from a user who could be a domain expert,base virtual software resource templates that are building blocks, likeWebSphere® Application Server, DB2®, and other middleware. The operationparses the received input to generate the metadata associated with thevirtual machine image (step 604). Next, the operation creates a virtualsoftware resource template that comprises the virtual machine image andgenerated metadata (step 606). The created virtual software resourcetemplate may either be a base virtual software resource template,comprising only one virtual machine image, or the created virtualsoftware resource template may be a composite virtual software resourcetemplate, comprising a plurality of virtual machine images. Next, theoperation saves and stores the virtual software resource template (step608) and the operation ends.

FIG. 7 is a flowchart illustrating the operation of managing software inaccordance with an exemplary embodiment. The operation of FIG. 7 may beimplemented in a virtual software resource template deployment manager,such as VSRT deployment manager 508 in FIG. 5. The operation begins whenthe virtual software resource template deployment manager retrieves avirtual software resource template (step 702). A copy is made of thevirtual software resource template metadata (step 704). The copy of themetadata is modified (step 706). The metadata is modified by adding twofields: the solution instance identifier and the solution instance name.The solution instance identifier and the solution instance name areanalogous to the virtual software resource template identifier and name.However, the solution instance identifier and the solution instance namerefer, not to the template, but to the particular instance of thesolution, which is in the process of being deployed. The solutioninstance identifier and the solution instance name may be specifiedmanually or automatically. In either case, the identifiers and namesmust be unique.

Next, for each virtual machine image in the virtual software resourcetemplate, a virtual machine name is chosen (step 708). The copiedmetadata is modified by adding the virtual machine names to the copiedmetadata (step 710). The virtual machine names may be specifiedmanually, may be automatically chosen from a pre-specified list ofavailable machine names, or may be generated dynamically, for example,based on the solution instance name and the role played by the basevirtual software resource template.

The copied metadata is modified by adding an Internet Protocol (IP)address to the copied metadata for each virtual machine image (step712). If dynamic IP addressing is not in use, an IP address is chosen.Next, utilizing the hardware profile information stored in the basevirtual software resource template for each virtual machine image, aphysical server is selected for each virtual machine image, and initialresource allocations, such as central processing unit, memory, and soforth, are specified and the information is augmented to the copiedmetadata (step 714). Next, the modified copy of the metadata is saved(step 716).

The virtual machine images are copied and modified as necessary (step718). Modifications may include, but are not limited to, adding, to agiven copy of a virtual machine image, information about the namesand/or IP addresses that were chosen for the other virtual machines onwhich the given virtual machine will depend. Any other configurationparameters that vary from solution-instance to solution-instance arealso specified at this time. The modified virtual machine images aredeployed and started on the selected physical servers (step 720) and theoperation ends. Because virtual machine images were previouslyconfigured with their dependency information, the solution instance isfully operational when it starts.

Thus, the exemplary embodiments provide for a simplified method ofmanaging software. The software solution is managed by deploying,configuring, and instantiating the software solution distributed asvirtual machine images.

The invention can take the form of an entirely hardware embodiment, anentirely software embodiment or an embodiment containing both hardwareand software elements. In a preferred embodiment, the invention isimplemented in software, which includes but is not limited to firmware,resident software, microcode, etc.

Furthermore, the invention can take the form of a computer programproduct accessible from a computer-usable or computer-readable mediumproviding program code for use by or in connection with a computer orany instruction execution system. For the purposes of this description,a computer-usable or computer readable medium can be any tangibleapparatus that can contain, store, communicate, propagate, or transportthe program for use by or in connection with the instruction executionsystem, apparatus, or device.

The medium can be an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system (or apparatus or device) or apropagation medium. Examples of a computer-readable medium include asemiconductor or solid state memory, magnetic tape, a removable computerdiskette, a random access memory (RAM), a read-only memory (ROM), arigid magnetic disk and an optical disk. Current examples of opticaldisks include compact disk—read only memory (CD-ROM), compactdisk—read/write (CD-R/W) and DVD.

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers.

Network adapters may also be coupled to the system to enable the dataprocessing system to become coupled to other data processing systems orremote printers or storage devices through intervening private or publicnetworks. Modems, cable modem and Ethernet cards are just a few of thecurrently available types of network adapters.

The description of the present invention has been presented for purposesof illustration and description, and is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art. Theembodiment was chosen and described in order to best explain theprinciples of the invention, the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

1. A computer implemented method for creating a set of virtual machineimages for software, the computer implemented method comprising:retrieving a virtual software resource template; copying metadataassociated with the virtual software resource template; modifying a copyof the metadata to generate personalized metadata for each virtualmachine image in the set of virtual machine images; and deploying theset of virtual machine images using the personalized metadata.
 2. Thecomputer implemented method of claim 1, wherein the personalizedmetadata associated with each virtual machine image describesdependencies and configuration parameters associated with thedependencies.
 3. The computer implemented method of claim 2, wherein thedependencies are dependencies between the set of virtual machine images.4. The computer implemented method of claim 2, wherein the dependenciesare dependencies between a virtual machine image and external systemcomponents.
 5. The computer implemented method of claim 1, wherein eachvirtual machine image is a virtual machine image with software stacksinstalled.
 6. The computer implemented method of claim 1, whereinmodifying the copy of the metadata to generate the personalized metadatafurther comprises: selecting a virtual machine name for each virtualmachine image in the set of virtual machine images; adding an IP addressfor each virtual machine image in the set of virtual machine images;selecting a physical server for each virtual machine image in the set ofvirtual machine images; and specifying initial resource allocations foreach virtual machine image in the set of virtual machine images.
 7. Thecomputer implemented method of claim 1, further comprising: storing thepersonalized metadata for each virtual machine image in the set ofvirtual machine images as the virtual software resource template.
 8. Adata processing system comprising: a bus system; a communications systemconnected to the bus system; a memory connected to the bus system,wherein the memory includes a set of instructions; and a processing unitconnected to the bus system, wherein the processing unit executes theset of instructions to retrieve a virtual software resource template;copy metadata associated with the virtual software resource template;modify a copy of the metadata to generate personalized metadata for eachvirtual machine image in the set of virtual machine images; and deploythe set of virtual machine images using the personalized metadata. 9.The data processing system of claim 8, wherein the personalized metadataassociated with each virtual machine image describes dependencies andconfiguration parameters associated with the dependencies.
 10. The dataprocessing system of claim 9, wherein the dependencies are dependenciesbetween at least one of virtual machine images or a virtual machineimage and external system components.
 11. The data processing system ofclaim 8, wherein each virtual machine image is a virtual machine imagewith software stacks installed.
 12. The data processing system of claim8, wherein the processing unit executing the set of instructions tomodify the copy of the metadata to generate the personalized metadataexecutes the set of instructions to select a virtual machine name foreach virtual machine image in the set of virtual machine images; add anIP address for each virtual machine image in the set of virtual machineimages; select a physical server for each virtual machine image in theset of virtual machine images; and specify initial resource allocationsfor each virtual machine image in the set of virtual machine images. 13.The data processing system of claim 8, wherein the processing unitexecutes the set of instructions to store the personalized metadata foreach virtual machine image in the set of virtual machine images as thevirtual software resource template.
 14. A computer program productcomprising: a computer usable medium including computer usable programcode for creating a set of virtual machine images for software, thecomputer program product including: computer usable program code forretrieving a virtual software resource template; computer usable programcode for copying metadata associated with the virtual software resourcetemplate; computer usable program code for modifying a copy of themetadata to generate personalized metadata for each virtual machineimage in the set of virtual machine images; and computer usable programcode for deploying the set of virtual machine images using thepersonalized metadata.
 15. The computer program product of claim 14,wherein the personalized metadata associated with each virtual machineimage describes dependencies and configuration parameters associatedwith the dependencies.
 16. The computer program product of claim 15,wherein the dependencies are dependencies between the set of virtualmachine images.
 17. The computer program product of claim 15, whereinthe dependencies are dependencies between a virtual machine image andexternal system components.
 18. The computer program product of claim14, wherein each virtual machine image is a virtual machine image withsoftware stacks installed.
 19. The computer program product of claim 14,wherein the computer usable program code for modifying the copy of themetadata to generate the personalized metadata further includes:computer usable program code for selecting a virtual machine name foreach virtual machine image in the set of virtual machine images;computer usable program code for adding an IP address for each virtualmachine image in the set of virtual machine images; computer usableprogram code for selecting a physical server for each virtual machineimage in the set of virtual machine images; and computer usable programcode for specifying initial resource allocations for each virtualmachine image in the set of virtual machine images.
 20. The computerprogram product of claim 14, further including: computer usable programcode for storing the personalized metadata for each virtual machineimage in the set of virtual machine images as the virtual softwareresource template.